      !< @file
      !>@brief Subrotina para fazer a transformada de Fourier
      !>
      !> A partir dos valores no domínio do tempo St é feita a transformada para as frequências escolhidas.
      subroutine dft(Sw,omegas,Nomega,ntps,St,nttotal)


      implicit none

      complex*16, parameter :: imag = (0.,1.) !< unidade imaginária
      double precision, parameter :: Pi = 4.*atan(1.) !< número Pi

      complex*16 :: Sw(Nomega) !< componentes no domínio da frequência
      double precision :: Omegas(Nomega) !< frequências angulares
      integer :: Nomega !< número de frequências
      integer :: ntps ! número de amostras por segundo
      double precision :: St(Nttotal) !< amostras no domínio do tempo
      integer :: nttotal !< número de amostras no período

      double precision :: dt !< intervalo de tempo
      integer :: kw !< contado de frequências
      integer :: it ! contador de instantes de tempo

      dt=1.0d0/(dfloat(ntps))


      do kw=1,Nomega
	  Sw(kw) = 0. 
	  DO it=0,Nttotal-1
	      Sw(kw) = Sw(kw) + St(it+1)* EXP(-imag*omegas(kw)*it*dt)
	  ENDDO
	  Sw(kw)= Sw(kw)*dt
      enddo





      return
      end subroutine dft


